home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 013 / undo_128.arc / UNDO-128.BAS next >
Encoding:
BASIC Source File  |  1984-09-19  |  4.4 KB  |  137 lines

  1. 20 CLS
  2. 30 COLOR 10,0
  3. 40 LOCATE 5,33
  4. 50 PRINT " UNDO-128.BAS "
  5. 60 LOCATE 7,31
  6. 70 PRINT " By Rich Schinnell "
  7. 80 LOCATE 8,26,1
  8. 90 PRINT " Rockville, MD (301) 949-8848 "
  9. 100 COLOR 7,0
  10. 110 PRINT
  11. 120 PRINT
  12. 130 PRINT "A program for IBM  DOS 2.0/2.1 Fixed Disk owners , ie XT's and"
  13. 140 PRINT "expansion chassis's who use the IBM DOS 2.0 BACKUP.COM utility and"
  14. 150 PRINT "want to access files from their backup disks without Restore."
  15. 160 PRINT "All files are restored up to the next 128 Byte boundry."
  16. 170 PRINT "This cause absolutely no problems as DOS always reserves"
  17. 180 PRINT "space in blocks of 512 for SS disks and 1024 for DS disks."
  18. 190 PRINT "Press <ENTER> to quit... Now Enter  SINGLE Letter Drive  for"
  19. 200 DEFINT A-Z
  20. 210 FALSE% = 0
  21. 220 TRUE% = NOT FALSE%
  22. 230 ON ERROR GOTO 1310
  23. 240 ZZZ! = 1
  24. 250 PRINT:LOCATE ,,1
  25. 260 PRINT"Backup disk Location ";
  26. 270 DR$=INKEY$:IF LEN(DR$)<1 THEN 270
  27. 280 IF ASC(DR$) = 13 THEN 1290
  28. 290 DR$ = DR$ + ":"
  29. 300 OPEN DR$+"BACKUPID.@@@" FOR INPUT AS #1
  30. 310 CLOSE #1
  31. 320 FILES DR$ + "*.*"
  32. 330 PRINT
  33. 340 PRINT
  34. 350 INPUT "File name to Recover (no Drive Designation) ";INFILE$
  35. 360 IF LEN(INFILE$) < 1 THEN 1290
  36. 370 CLOSE #1
  37. 380 OPEN DR$+INFILE$ FOR INPUT AS #1
  38. 390 CLOSE 1
  39. 400 CLOSE #1
  40. 410 OPEN DR$+"BACKUPID.@@@" AS #1 LEN=128
  41. 420 FIELD #1,128 AS G$
  42. 430 GET #1
  43. 440 CLOSE #1
  44. 450 N$ = STR$( ASC( MID$(G$,3,1))) + STR$( ASC( MID$(G$,2,1)))
  45. 460 N=VAL(N$)
  46. 470 DTE$=STR$(ASC(MID$(G$,7,1)))+"-"+STR$(ASC(MID$(G$,6,1)))+"-"
  47. 480 DTE$=DTE$+STR$(ASC(MID$(G$,4,1))+1792)
  48. 490 PRINT "This is your backup disk #"; N;" Dated ";DTE$
  49. 500 CLOSE #1
  50. 510 OPEN DR$+INFILE$ AS #1 LEN=128
  51. 520 C$ = ""
  52. 530 D$ = ""
  53. 540 FIELD #1,128 AS A$
  54. 550 A# = LOF(1)
  55. 560 PRINT "Input file has";A# - 128;" Bytes in it"
  56. 570 GET #1
  57. 580 C$ = A$
  58. 590 FOR I% = 1 TO 128
  59. 600   IF ASC( MID$(C$,I%,1)) < 33 THEN 620
  60. 610   D$ = D$ + MID$(C$,I%,1)
  61. 620 NEXT I%
  62. 630 IF ASC(MID$(C$,2,1)) = 1 THEN 660
  63. 640 PRINT "This is Part 2 of";D$;" You must start with the first part"
  64. 650 BEEP:GOTO 330
  65. 660 IF ASC(MID$(C$,1,1)) =255 THEN ONLY.ONE%=-1:GOTO 690
  66. 670 PRINT:COLOR 23,0:PRINT "File on two Disks ,Insert backup disk #";
  67. 680 PRINT N+1;" When Instructed" : COLOR 10,0 : BEEP
  68. 690 PRINT
  69. 700 PRINT CHR$(34); MID$(D$,1,40); CHR$(34);" Was the file name when backed up"
  70. 710 INPUT "What do you want to name the output file ";OUTFILE$
  71. 720 IF LEN(OUTFILE$) < 1 THEN 330
  72. 730 OPEN OUTFILE$ FOR INPUT AS #2
  73. 740 CLOSE 2
  74. 750 PRINT "File ";OUTFILE$;" already exists, <O>verwrite ";
  75. 760 INPUT ": ";WELL$
  76. 770 IF WELL$ = "O" OR WELL$ = "o" THEN 780  ELSE 710
  77. 780 CLOSE #2
  78. 790 OPEN OUTFILE$ FOR OUTPUT AS #2
  79. 800 CLOSE #2
  80. 810 OPEN OUTFILE$ AS #2 LEN=128
  81. 820 FIELD #2,128 AS B$
  82. 830 COLOR 23,0
  83. 840 PRINT "Working ....";
  84. 850 COLOR 7,0
  85. 860 FOR I! = 2 TO INT((A#-128)/128)+2
  86. 870   GET #1,I!
  87. 880   LSET B$ = A$
  88. 890   PUT #2,ZZZ!
  89. 900   ZZZ! = ZZZ! + 1
  90. 910   PRINT CHR$(15);
  91. 920 NEXT I!
  92. 930 IF ONLY.ONE% THEN 1260
  93. 940 PRINT
  94. 950 PRINT "Insert Backup Disk #";N +1;" in drive ";DR$;
  95. 960 PRINT " and press <ENTER> or <Q>uit ":BEEP
  96. 970 R$ = INKEY$
  97. 980 IF R$ = "" THEN 970
  98. 990 IF R$ = "Q" OR R$ = "q" THEN CLOSE  : KEY ON  : END
  99. 1000 CLOSE #1
  100. 1010 OPEN DR$+"BACKUPID.@@@" AS #1 LEN=128
  101. 1020 FIELD #1,128 AS G$
  102. 1030 GET #1
  103. 1040 CLOSE #1
  104. 1050 N1$ = STR$( ASC( MID$(G$,3,1))) + STR$( ASC( MID$(G$,2,1)))
  105. 1060 N1=VAL(N1$)
  106. 1070 IF N1 = N + 1 THEN 1090
  107. 1080 PRINT "WRONG DISK, TRY AGAIN You put in disk #"; N1 : GOTO 930
  108. 1090 CLOSE #1
  109. 1100 OPEN DR$+INFILE$ FOR INPUT AS #1
  110. 1110 CLOSE #1
  111. 1120 OPEN DR$+INFILE$ AS #1 LEN=128
  112. 1130 FIELD #1,128 AS A$
  113. 1140 C$ = ""
  114. 1150 D$ = ""
  115. 1160 A# = LOF(1)
  116. 1170 PRINT "Input file has";A# - 128;" Bytes in it"
  117. 1180   GET #1
  118. 1190   C$ = A$
  119. 1200 FOR I% = 1 TO 128
  120. 1210   IF ASC( MID$(C$,I%,1)) < 33 THEN 1230
  121. 1220   D$ = D$ + MID$(C$,I%,1)
  122. 1230 NEXT I%
  123. 1240 ONLY.ONE% = - 1
  124. 1250 GOTO 860
  125. 1260 CLOSE
  126. 1270 PRINT
  127. 1280 PRINT "File ";OUTFILE$;" created  Size="; STR$((ZZZ!-1)*128);" Bytes
  128. 1290 KEY ON
  129. 1300 END
  130. 1310 IF ERL=300 THEN DR$="":PRINT " Not a Valid Backup Disk":BEEP:RESUME 250
  131. 1320 IF ERL=380 THEN PRINT DR$;INFILE$;" NOT FOUND ":CLOSE #1:RESUME 250
  132. 1330 IF ERL=730 THEN RESUME 780
  133. 1340 IF ERL=890 THEN PRINT "disk is Probably full, check the disk":RESUME 1290
  134. 1350 IF ERL=1100 THEN PRINT "Not found " : RESUME 940
  135. 1360 PRINT "Error"; ERR ;" has occured in line #"; ERL
  136. 1370 RESUME 1290
  137.